package com.exam.service.interfaces;

import com.exam.domain.Field;
import com.exam.domain.KnowledgePoint;
import com.exam.domain.Question;
import com.exam.domain.QuestionType;
import com.exam.service.Service;

import java.util.List;

/**
 * Created by jly on 2017/2/13.
 */
public interface QuestionService extends Service {
    /**
     * 查询所有科目
     *
     * @return: 返回数据库科目表所有内容
     * @Since: 2017-2-13
     * @author: jly
     * */
    List<Field> queryFields();

    /**
     * 查询所有试题类型
     *
     * @return: 返回试题类型所有内容
     * @Since: 2017-2-13
     * @author: jly
     * */
    List<QuestionType> queryQuestionType();

    /**
     * 查询所有知识点
     *
     * @return: 返回知识点所有内容
     * @Since: 2017-2-13
     * @author: jly
     * */
    List<KnowledgePoint> queryPoint();

    /**
     * 查看试题列表具体数据
     *
     * @return: 返回试题列表及相关信息
     * @since: 2017-2-13
     * @author: jly
     * */
    List<Question> questionLists(String creator, int typeId, int kindId, int pointId);

    /**
     *删除试题相关答案
     *
     * @param questionid:试题id
     * @return 返回是否删除成功
     * @since 2017-2-24
     * @author jly
     * */
    boolean delAnswer(int questionid);

    /**
     *删除试题
     *
     * @param questionid:试题id
     * @return 返回是否删除成功
     * @since 2017-2-24
     * @author jly
     * */
    boolean delQuestion(int questionid);

    /**
     * 加载编辑框信息
     *
     * @param questionid:试题id
     * @return id对应的试题信息
     * @since 2017-2-24
     * @author jly
     * */
    Question loadEdit(int questionid);

    /**
     * 编辑试题信息
     *
     * @param fielsId:专业id，pointId:知识点id，answer:正确答案
     * @return: 修改试题信息
     * @since: 2017-2-24
     * @author: jly
     * */
    boolean questionInfo(int fielsId, int pointId, String answer,int questionId);

    /**
     * 查看试题详细信息
     *
     * @param questionId 试题id
     * @return: 返回试题详细信息
     * @since: 2017-2-24
     * @author: jly
     * */
    Question questionDetail(Integer questionId);

    /**
     * 查看试题列表具体数据(老师登录)
     *
     * @return: 返回试题列表及相关信息
     * @since: 2017-2-13
     * @author: jly
     * */
    List<Question> questionList_teachet(String creator, Integer typeId, Integer kindId, Integer pointId, Long userId);

    /**
     * 添加新知识点
     *
     * @param pointname:知识点名称， pointdesc:知识点描述
     * @since 2017-3-3
     * @author jly
     * */
    boolean addPoint(String pointname, String pointdesc);

    /**
     * 根据知识点名称查询指点的id
     *
     * @param pointname:知识点名称
     * @since 2017-3-3
     * @author jly
     * */
    int queryPointId(String pointname);

    /**
     * 新增试题
     *
     * @param questionName:试题名称， questionDesc：试题描述, kindId:科目, q_type：试题类型
     *         pointId：知识点选择,pointname：知识点新增名称,pointdesc：知识点新增描述
     *         answerA：答案A内容,answerB：答案B内容,answerC：答案C内容,answerD：答案D内容
     *         trueanswer:答案T内容,falseanswer:答案F内容,select1:选择题正确答案,select2:判断题正确答案
     * @since 2017-3-3
     * @author jly
     * */
    boolean addQuestion(String questionName, Long userId, Integer q_type, String select1, Integer kindId, int newpointId, String questionDesc,String level);

    /**
     * 添加试题答案（选择题）
     *
     * @param
     * @param answer
     *@param newquestionId  @since 2017-3-3
     * @author jly
     * */
    boolean addAnswer1(String answer, int newquestionId);

    /**
     * 添加试题答案（判断题）
     *
     * @param
     * @param newquestionId
     * @since 2017-3-3
     * @author jly
     * */
    boolean addAnswer2(String answer, int newquestionId);

    /**
     * 根据试题点名称查询试题的id
     *
     * @param questionName:试题名称
     * @since 2017-3-3
     * @author jly
     * */
    int queryQuestionId(String questionName);

    /**
     * 添加科目
     *
     *@param kindname科目名称,
     * @param kinddesc科目描述
     * @since 2017-3-14
     * @author jly
     * */
    boolean addKind(String kindname, String kinddesc);

    /**
     * 添加试题类型
     *
     *@param typename 类型名称
     * @since 2017-3-14
     * @author jly
     * */
    boolean addType(String typename);

    /**
     * 根据科目名称查询科目的id
     *
     * @param kindname:科目
     * @since 2017-3-14
     * @author jly
     * */
    int queryKindId(String kindname);

    /**
     * 根据类型名称查询类型的id
     *
     * @param typename:类型名称
     * @since 2017-3-14
     * @author jly
     * */
    int queryTypeId(String typename);

    /**
     * 插入选择简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addXZJD(int fieldxz, int typeId, int xzjd, int level);

    /**
     * 插入选择中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addXZZD(int fieldxz, int typeId, int xzzd, int level);

    /**
     * 插入选择难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addXZN(int fieldxz, int typeId, int xzn, int level);

    /**
     * 插入判断简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addPDJD(int fieldxz, int typeId, int pdjd, int level);

    /**
     * 插入判断中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addPDZD(int fieldxz, int typeId, int pdzd, int level);

    /**
     * 插入判断难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addPDN(int fieldxz, int typeId, int pdn, int level);

    /**
     * 插入填空简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addTKJD(int fieldxz, int typeId, int tkjd, int level);

    /**
     * 插入填空中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addTKZD(int fieldxz, int typeId, int tkzd, int level);

    /**
     * 插入填空难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addTKN(int fieldxz, int typeId, int tkn, int level);

    /**
     * 插入主观简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addZGJD(int fieldxz, Integer typeId, Integer zgjd, int level);

    /**
     * 插入主观中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addZGZD(int fieldxz, Integer typeId, Integer zgzd, int level);

    /**
     * 插入主观难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean addZGN(int fieldxz, Integer typeId, Integer zgn, int level);

    /**
     * 查询策略表里该科目是否已经存在
     *
     * @param fieldxz--科目id
     * @since 2017-3-15
     * @author jly
     * */
    int queryFieldCount(int fieldxz);

    /**
     * 修改选择简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataXZJD(int fieldxz, int typeId, int xzjd, int level);

    /**
     * 修改选择中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataXZZD(int fieldxz, int typeId, int xzzd, int level);

    /**
     * 修改选择难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataXZN(int fieldxz, int typeId, int xzn, int level);

    /**
     * 修改判断简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataPDJD(int fieldxz, int typeId, int pdjd, int level);

    /**
     * 修改判断中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataPDZD(int fieldxz, int typeId, int pdzd, int level);

    /**
     * 修改判断难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataPDN(int fieldxz, int typeId, int pdn, int level);

    /**
     * 修改填空简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataTKJD(int fieldxz, int typeId, int tkjd, int level);

    /**
     * 修改填空中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataTKZD(int fieldxz, int typeId, int tkzd, int level);

    /**
     * 修改填空难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataTKN(int fieldxz, int typeId, int tkn, int level);

    /**
     * 修改主观简单题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataZGJD(int fieldxz, Integer typeId, Integer zgjd, int level);

    /**
     * 修改主观中等题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataZGZD(int fieldxz, Integer typeId, Integer zgzd, int level);

    /**
     * 修改主观难题数目
     *
     * @since 2017-3-15
     * @author jly
     * */
    boolean updataZGN(int fieldxz, Integer typeId, Integer zgn, int level);

    /**
     * @describe 根据id查询该科目下是否有该类型试题
     * @since 2017-3-16
     * @author jly
     * @param typeId*/
    int queryTypeId2(Integer typeId,Integer fieldId);

    /**
     * @describe 根据科目id删除该科目的组卷策略
     * @since 2017-3-17
     * @author jly
     * @param typeId*/
    boolean delstrategies(int fieldxz);

    /**
     * @describe 根据实体名称查询试题是否存在
     * @since 2017-3-17
     * @author jly
     * @param questionName*/
    int queryQuestionCount(String questionName);
}
